[アップデート] CloudFormationがTransit Gateway Flow Logsをサポートしました
Transit Gateway Flow LogsもCloudFormationで設定したいな
こんにちは、のんピ(@non____97)です。
皆さんはTransit Gateway Flow LogsもCloudFormationで設定したいなと思ったことはありますか? 私はあります。
1ヶ月ほど前にAthenaでTransit Gateway Flow LogsをAthenaで分析する記事を書いた際は、CloudFormationはTransit Gateway Flow Logsに対応していませんでした。
その後なんとなく、VPC Flow LogsのリソースタイプであるAWS::EC2::FlowLogを確認すると、ResourceType
のパラメーターにTransitGateway
とTransitGatewayAttachment
が追加されているではありませんか。
ResourceType
The type of resource to monitor.
Required: Yes
Type: String
Allowed values: NetworkInterface | Subnet | TransitGateway | TransitGatewayAttachment | VPC
Update requires: Replacement
これは嬉しいですね。
早速試してみたので紹介します。
検証環境
検証環境は以下の通りです。
VPC間をTransit Gatewayで接続しておきます。そしてEC2インスタンス間で適当な通信を行い、出力されたログをAthenaで分析します。
AWS CDKでTransit Gateway Flow Logsを作成
それではTransit Gateway Flow Logsの設定をします。
今回はCloudFormationではなく、AWS CDKで定義します。使用したコードは以下リポジトリに保存しています。
Transit Gateway Flows Logsは以下のように設定しました。
- 出力先 : S3バケット
- ログフォーマット : デフォルトのものを明示的に指定
- 最大集約期間 : 60秒 (固定値)
- ファイルフォーマット : テキスト
- Hive互換プレフィックス : false
- 1時間ごとのパーティション : true
ログフォーマットはTransit Gateway Flow Logsは最大集約期間が最大60秒と言うこともありparquet
を選択しても高圧縮が見込められないのではと思い、テキストを選択しました。(カラムナフォーマットである分クエリ速度及びスキャン速度についてはParquetに分があると思います)
また、今回はAthenaで分析する際にPartition Projectionのdateタイプを使用したかったのでHive互換プレフィックスは無効化しています。
Transit Gateway Flows Logs部分のコードは以下の通りです。
new cdk.aws_ec2.CfnFlowLog(this, "Transit Gateway Flow Logs", { resourceId: tgw.ref, resourceType: "TransitGateway", logDestination: tgwFlowLogsBucket.bucketArn, logDestinationType: "s3", logFormat: "${version} ${resource-type} ${account-id} ${tgw-id} ${tgw-attachment-id} ${tgw-src-vpc-account-id} ${tgw-dst-vpc-account-id} ${tgw-src-vpc-id} ${tgw-dst-vpc-id} ${tgw-src-subnet-id} ${tgw-dst-subnet-id} ${tgw-src-eni} ${tgw-dst-eni} ${tgw-src-az-id} ${tgw-dst-az-id} ${tgw-pair-attachment-id} ${srcaddr} ${dstaddr} ${srcport} ${dstport} ${protocol} ${packets} ${bytes} ${start} ${end} ${log-status} ${type} ${packets-lost-no-route} ${packets-lost-blackhole} ${packets-lost-mtu-exceeded} ${packets-lost-ttl-expired} ${tcp-flags} ${region} ${flow-direction} ${pkt-src-aws-service} ${pkt-dst-aws-service}", maxAggregationInterval: 60, destinationOptions: { FileFormat: "plain-text", HiveCompatiblePartitions: false, PerHourPartition: true, }, tags: [ { key: "Name", value: "tgw-flow-logs", }, ], });
デプロイ後、マネジメントコンソールからTransit Gateway Flow Logsが設定されていることを確認します。
確かに設定されていますね。
pingやnmapでEC2インスタンス間で通信をしばらくした後、s3-treeでS3バケットにログが出力されていることを確認します。
sh-4.2$ /home/ssm-user/.local/bin/s3-tree bucket-tgw-flow-logs bucket-tgw-flow-logs └── AWSLogs └── <AWSアカウントID> └── vpcflowlogs └── us-east-1 └── 2022 └── 11 ├── 22 │ └── 23 │ ├── <AWSアカウントID>_vpcflowlogs_us-east-1_fl-000a735ab701aec34_20221122T2330Z_01ac6ff9.log.gz │ ├── <AWSアカウントID>_vpcflowlogs_us-east-1_fl-000a735ab701aec34_20221122T2330Z_c21b0aed.log.gz │ ├── <AWSアカウントID>_vpcflowlogs_us-east-1_fl-000a735ab701aec34_20221122T2335Z_3bd3780b.log.gz │ ├── <AWSアカウントID>_vpcflowlogs_us-east-1_fl-000a735ab701aec34_20221122T2335Z_719feec6.log.gz │ ├── <AWSアカウントID>_vpcflowlogs_us-east-1_fl-000a735ab701aec34_20221122T2340Z_23c57c95.log.gz │ ├── <AWSアカウントID>_vpcflowlogs_us-east-1_fl-000a735ab701aec34_20221122T2340Z_fcd89828.log.gz │ ├── <AWSアカウントID>_vpcflowlogs_us-east-1_fl-000a735ab701aec34_20221122T2345Z_4029b3d8.log.gz │ ├── <AWSアカウントID>_vpcflowlogs_us-east-1_fl-000a735ab701aec34_20221122T2345Z_56f92516.log.gz │ ├── <AWSアカウントID>_vpcflowlogs_us-east-1_fl-000a735ab701aec34_20221122T2350Z_08d9b5cd.log.gz │ ├── <AWSアカウントID>_vpcflowlogs_us-east-1_fl-000a735ab701aec34_20221122T2350Z_2b267d85.log.gz │ ├── <AWSアカウントID>_vpcflowlogs_us-east-1_fl-000a735ab701aec34_20221122T2355Z_1f9bc820.log.gz │ └── <AWSアカウントID>_vpcflowlogs_us-east-1_fl-000a735ab701aec34_20221122T2355Z_909f0c30.log.gz └── 23 └── 00 ├── <AWSアカウントID>_vpcflowlogs_us-east-1_fl-000a735ab701aec34_20221123T0000Z_36fca142.log.gz ├── <AWSアカウントID>_vpcflowlogs_us-east-1_fl-000a735ab701aec34_20221123T0000Z_eee0840f.log.gz ├── <AWSアカウントID>_vpcflowlogs_us-east-1_fl-000a735ab701aec34_20221123T0005Z_601c28ab.log.gz ├── <AWSアカウントID>_vpcflowlogs_us-east-1_fl-000a735ab701aec34_20221123T0005Z_8e2f45fb.log.gz ├── <AWSアカウントID>_vpcflowlogs_us-east-1_fl-000a735ab701aec34_20221123T0010Z_70fad9b8.log.gz ├── <AWSアカウントID>_vpcflowlogs_us-east-1_fl-000a735ab701aec34_20221123T0010Z_fd505e56.log.gz ├── <AWSアカウントID>_vpcflowlogs_us-east-1_fl-000a735ab701aec34_20221123T0015Z_3f20b604.log.gz ├── <AWSアカウントID>_vpcflowlogs_us-east-1_fl-000a735ab701aec34_20221123T0015Z_9d314a11.log.gz ├── <AWSアカウントID>_vpcflowlogs_us-east-1_fl-000a735ab701aec34_20221123T0020Z_5050a3b5.log.gz ├── <AWSアカウントID>_vpcflowlogs_us-east-1_fl-000a735ab701aec34_20221123T0020Z_edc56f27.log.gz ├── <AWSアカウントID>_vpcflowlogs_us-east-1_fl-000a735ab701aec34_20221123T0025Z_215fbd9a.log.gz ├── <AWSアカウントID>_vpcflowlogs_us-east-1_fl-000a735ab701aec34_20221123T0025Z_6d0e3b99.log.gz ├── <AWSアカウントID>_vpcflowlogs_us-east-1_fl-000a735ab701aec34_20221123T0030Z_49adab97.log.gz ├── <AWSアカウントID>_vpcflowlogs_us-east-1_fl-000a735ab701aec34_20221123T0030Z_d0acf554.log.gz └── <AWSアカウントID>_vpcflowlogs_us-east-1_fl-000a735ab701aec34_20221123T0035Z_c8b93634.log.gz
1時間ごとにパーティションが分割されて出力されていますね。
Athenaで分析してみる
せっかくなので出力されたログに対してAthenaで分析してみます。
以下DDLでテーブルを定義します。
CREATE EXTERNAL TABLE `transit_gateway_flow_logs_partition_projection`( `version` int, `resource_type` string, `account_id` string, `tgw_id` string, `tgw_attachment_id` string, `tgw_src_vpc_account_id` string, `tgw_dst_vpc_account_id` string, `tgw_src_vpc_id` string, `tgw_dst_vpc_id` string, `tgw_src_subnet_id` string, `tgw_dst_subnet_id` string, `tgw_src_eni` string, `tgw_dst_eni` string, `tgw_src_az_id` string, `tgw_dst_az_id` string, `tgw_pair_attachment_id` string, `srcaddr` string, `dstaddr` string, `srcport` int, `dstport` int, `protocol` bigint, `packets` bigint, `bytes` bigint, `start` bigint, `end` bigint, `log_status` string, `type` string, `packets_lost_no_route` bigint, `packets_lost_blackhole` bigint, `packets_lost_mtu_exceeded` bigint, `packets_lost_ttl_expired` bigint, `tcp_flags` int, `region` string, `flow_direction` string, `pkt_src_aws_service` string, `pkt_dst_aws_service` string ) PARTITIONED BY ( `aws_account_id` string, `aws_region` string, `datehour` string ) ROW FORMAT DELIMITED FIELDS TERMINATED BY ' ' LOCATION 's3://bucket-tgw-flow-logs/AWSLogs/' TBLPROPERTIES ( 'projection.enabled'='true', 'has_encrypted_data'='true', "skip.header.line.count"="1", 'projection.aws_account_id.type'='enum', 'projection.aws_account_id.values'='<AWSアカウントID>', 'projection.aws_region.type'='enum', 'projection.aws_region.values'='us-east-1,ap-northeast-1', 'projection.datehour.type'='date', 'projection.datehour.interval'='1', 'projection.datehour.interval.unit'='HOURS', 'projection.datehour.range'='NOW-1YEARS,NOW', 'projection.datehour.format'='yyyy/MM/dd/HH', 'storage.location.template'='s3://bucket-tgw-flow-logs/AWSLogs/${aws_account_id}/vpcflowlogs/${aws_region}/${datehour}' )
Partition Projectionを使って、直近1年間のログに対してクエリを実行できるようにします。
こちらのDDLをAthenaで実行します。すると、テーブル一覧に定義したテーブルが表示されるようになります。
あとは適当にクエリを実行します。
2022/11/22の0時から2022/11/23の0時までのログ10件を表示させてみます。
SELECT * FROM transit_gateway_flow_logs_partition_projection WHERE aws_account_id='<AWSアカウントID>' and aws_region='us-east-1' and datehour>='2022/11/22/00' and datehour<='2022/11/23/00' LIMIT 10
実行結果は以下の通りです。
# version resource_type account_id tgw_id tgw_attachment_id tgw_src_vpc_account_id tgw_dst_vpc_account_id tgw_src_vpc_id tgw_dst_vpc_id tgw_src_subnet_id tgw_dst_subnet_id tgw_src_eni tgw_dst_eni tgw_src_az_id tgw_dst_az_id tgw_pair_attachment_id srcaddr dstaddr srcport dstport protocol packets bytes start end log_status type packets_lost_no_route packets_lost_blackhole packets_lost_mtu_exceeded packets_lost_ttl_expired tcp_flags region flow_direction pkt_src_aws_service pkt_dst_aws_service aws_account_id aws_region datehour 1 6 TransitGateway <AWSアカウントID> tgw-081ba8a810489d200 tgw-attach-039f737730c584a48 <AWSアカウントID> <AWSアカウントID> vpc-04a3b32cba00bbfe1 vpc-062ed0e3a40e79be8 subnet-0742e53662fb1dc12 subnet-03061cb6b7710b3a5 eni-040e203651b487792 eni-0ea3ebd26e4832b54 use1-az6 use1-az6 tgw-attach-0315056bf2c566107 10.0.2.23 10.0.1.15 0 0 1 59 4956 1669164300 1669164359 OK IPv4 0 0 0 0 0 us-east-1 ingress - - <AWSアカウントID> us-east-1 2022/11/23/00 2 6 TransitGateway <AWSアカウントID> tgw-081ba8a810489d200 tgw-attach-039f737730c584a48 <AWSアカウントID> <AWSアカウントID> vpc-04a3b32cba00bbfe1 vpc-062ed0e3a40e79be8 subnet-0742e53662fb1dc12 subnet-03061cb6b7710b3a5 eni-040e203651b487792 eni-0ea3ebd26e4832b54 use1-az6 use1-az6 tgw-attach-0315056bf2c566107 10.0.2.23 10.0.1.15 0 0 1 59 4956 1669164420 1669164479 OK IPv4 0 0 0 0 0 us-east-1 ingress - - <AWSアカウントID> us-east-1 2022/11/23/00 3 6 TransitGateway <AWSアカウントID> tgw-081ba8a810489d200 tgw-attach-039f737730c584a48 <AWSアカウントID> <AWSアカウントID> vpc-062ed0e3a40e79be8 vpc-04a3b32cba00bbfe1 subnet-03061cb6b7710b3a5 subnet-0742e53662fb1dc12 eni-0ea3ebd26e4832b54 eni-040e203651b487792 use1-az6 use1-az6 tgw-attach-0315056bf2c566107 10.0.1.15 10.0.2.23 0 0 1 59 4956 1669164420 1669164479 OK IPv4 0 0 0 0 0 us-east-1 egress - - <AWSアカウントID> us-east-1 2022/11/23/00 4 6 TransitGateway <AWSアカウントID> tgw-081ba8a810489d200 tgw-attach-039f737730c584a48 <AWSアカウントID> <AWSアカウントID> vpc-062ed0e3a40e79be8 vpc-04a3b32cba00bbfe1 subnet-03061cb6b7710b3a5 subnet-0742e53662fb1dc12 eni-0ea3ebd26e4832b54 eni-040e203651b487792 use1-az6 use1-az6 tgw-attach-0315056bf2c566107 10.0.1.15 10.0.2.23 0 0 1 59 4956 1669164300 1669164359 OK IPv4 0 0 0 0 0 us-east-1 egress - - <AWSアカウントID> us-east-1 2022/11/23/00 5 6 TransitGateway <AWSアカウントID> tgw-081ba8a810489d200 tgw-attach-0315056bf2c566107 <AWSアカウントID> <AWSアカウントID> vpc-062ed0e3a40e79be8 vpc-04a3b32cba00bbfe1 subnet-03061cb6b7710b3a5 subnet-0742e53662fb1dc12 eni-0ea3ebd26e4832b54 eni-040e203651b487792 use1-az6 use1-az6 tgw-attach-039f737730c584a48 10.0.1.15 10.0.2.23 0 0 1 59 4956 1669164300 1669164359 OK IPv4 0 0 0 0 0 us-east-1 ingress - - <AWSアカウントID> us-east-1 2022/11/23/00 6 6 TransitGateway <AWSアカウントID> tgw-081ba8a810489d200 tgw-attach-0315056bf2c566107 <AWSアカウントID> <AWSアカウントID> vpc-04a3b32cba00bbfe1 vpc-062ed0e3a40e79be8 subnet-0742e53662fb1dc12 subnet-03061cb6b7710b3a5 eni-040e203651b487792 eni-0ea3ebd26e4832b54 use1-az6 use1-az6 tgw-attach-039f737730c584a48 10.0.2.23 10.0.1.15 0 0 1 59 4956 1669164300 1669164359 OK IPv4 0 0 0 0 0 us-east-1 egress - - <AWSアカウントID> us-east-1 2022/11/23/00 7 6 TransitGateway <AWSアカウントID> tgw-081ba8a810489d200 tgw-attach-039f737730c584a48 <AWSアカウントID> <AWSアカウントID> vpc-062ed0e3a40e79be8 vpc-04a3b32cba00bbfe1 subnet-03061cb6b7710b3a5 subnet-0742e53662fb1dc12 eni-0ea3ebd26e4832b54 eni-040e203651b487792 use1-az6 use1-az6 tgw-attach-0315056bf2c566107 10.0.1.15 10.0.2.23 0 0 1 59 4956 1669164480 1669164539 OK IPv4 0 0 0 0 0 us-east-1 egress - - <AWSアカウントID> us-east-1 2022/11/23/00 8 6 TransitGateway <AWSアカウントID> tgw-081ba8a810489d200 tgw-attach-0315056bf2c566107 <AWSアカウントID> <AWSアカウントID> vpc-062ed0e3a40e79be8 vpc-04a3b32cba00bbfe1 subnet-03061cb6b7710b3a5 subnet-0742e53662fb1dc12 eni-0ea3ebd26e4832b54 eni-040e203651b487792 use1-az6 use1-az6 tgw-attach-039f737730c584a48 10.0.1.15 10.0.2.23 0 0 1 58 4872 1669164360 1669164419 OK IPv4 0 0 0 0 0 us-east-1 ingress - - <AWSアカウントID> us-east-1 2022/11/23/00 9 6 TransitGateway <AWSアカウントID> tgw-081ba8a810489d200 tgw-attach-0315056bf2c566107 <AWSアカウントID> <AWSアカウントID> vpc-04a3b32cba00bbfe1 vpc-062ed0e3a40e79be8 subnet-0742e53662fb1dc12 subnet-03061cb6b7710b3a5 eni-040e203651b487792 eni-0ea3ebd26e4832b54 use1-az6 use1-az6 tgw-attach-039f737730c584a48 10.0.2.23 10.0.1.15 0 0 1 58 4872 1669164360 1669164419 OK IPv4 0 0 0 0 0 us-east-1 egress - - <AWSアカウントID> us-east-1 2022/11/23/00 10 6 TransitGateway <AWSアカウントID> tgw-081ba8a810489d200 tgw-attach-039f737730c584a48 <AWSアカウントID> <AWSアカウントID> vpc-04a3b32cba00bbfe1 vpc-062ed0e3a40e79be8 subnet-0742e53662fb1dc12 subnet-03061cb6b7710b3a5 eni-040e203651b487792 eni-0ea3ebd26e4832b54 use1-az6 use1-az6 tgw-attach-0315056bf2c566107 10.0.2.23 10.0.1.15 0 0 1 58 4872 1669164360 1669164419 OK IPv4 0 0 0 0 0 us-east-1 ingress - - <AWSアカウントID> us-east-1 2022/11/23/00
また、この際のスキャンしたデータ量は18.09 KBでした。
次に、2022/11/23の0時台のログ10件を表示させてみます。
SELECT * FROM transit_gateway_flow_logs_partition_projection WHERE aws_account_id='<AWSアカウントID>' and aws_region='us-east-1' and datehour='2022/11/23/00' LIMIT 10
実行結果は以下の通りです。
# version resource_type account_id tgw_id tgw_attachment_id tgw_src_vpc_account_id tgw_dst_vpc_account_id tgw_src_vpc_id tgw_dst_vpc_id tgw_src_subnet_id tgw_dst_subnet_id tgw_src_eni tgw_dst_eni tgw_src_az_id tgw_dst_az_id tgw_pair_attachment_id srcaddr dstaddr srcport dstport protocol packets bytes start end log_status type packets_lost_no_route packets_lost_blackhole packets_lost_mtu_exceeded packets_lost_ttl_expired tcp_flags region flow_direction pkt_src_aws_service pkt_dst_aws_service aws_account_id aws_region datehour 1 6 TransitGateway <AWSアカウントID> tgw-081ba8a810489d200 tgw-attach-039f737730c584a48 <AWSアカウントID> <AWSアカウントID> vpc-04a3b32cba00bbfe1 vpc-062ed0e3a40e79be8 subnet-0742e53662fb1dc12 subnet-03061cb6b7710b3a5 eni-040e203651b487792 eni-0ea3ebd26e4832b54 use1-az6 use1-az6 tgw-attach-0315056bf2c566107 10.0.2.23 10.0.1.15 0 0 1 59 4956 1669164300 1669164359 OK IPv4 0 0 0 0 0 us-east-1 ingress - - <AWSアカウントID> us-east-1 2022/11/23/00 2 6 TransitGateway <AWSアカウントID> tgw-081ba8a810489d200 tgw-attach-039f737730c584a48 <AWSアカウントID> <AWSアカウントID> vpc-04a3b32cba00bbfe1 vpc-062ed0e3a40e79be8 subnet-0742e53662fb1dc12 subnet-03061cb6b7710b3a5 eni-040e203651b487792 eni-0ea3ebd26e4832b54 use1-az6 use1-az6 tgw-attach-0315056bf2c566107 10.0.2.23 10.0.1.15 0 0 1 59 4956 1669164420 1669164479 OK IPv4 0 0 0 0 0 us-east-1 ingress - - <AWSアカウントID> us-east-1 2022/11/23/00 3 6 TransitGateway <AWSアカウントID> tgw-081ba8a810489d200 tgw-attach-039f737730c584a48 <AWSアカウントID> <AWSアカウントID> vpc-062ed0e3a40e79be8 vpc-04a3b32cba00bbfe1 subnet-03061cb6b7710b3a5 subnet-0742e53662fb1dc12 eni-0ea3ebd26e4832b54 eni-040e203651b487792 use1-az6 use1-az6 tgw-attach-0315056bf2c566107 10.0.1.15 10.0.2.23 0 0 1 59 4956 1669164420 1669164479 OK IPv4 0 0 0 0 0 us-east-1 egress - - <AWSアカウントID> us-east-1 2022/11/23/00 4 6 TransitGateway <AWSアカウントID> tgw-081ba8a810489d200 tgw-attach-039f737730c584a48 <AWSアカウントID> <AWSアカウントID> vpc-062ed0e3a40e79be8 vpc-04a3b32cba00bbfe1 subnet-03061cb6b7710b3a5 subnet-0742e53662fb1dc12 eni-0ea3ebd26e4832b54 eni-040e203651b487792 use1-az6 use1-az6 tgw-attach-0315056bf2c566107 10.0.1.15 10.0.2.23 0 0 1 59 4956 1669164300 1669164359 OK IPv4 0 0 0 0 0 us-east-1 egress - - <AWSアカウントID> us-east-1 2022/11/23/00 5 6 TransitGateway <AWSアカウントID> tgw-081ba8a810489d200 tgw-attach-0315056bf2c566107 <AWSアカウントID> <AWSアカウントID> vpc-062ed0e3a40e79be8 vpc-04a3b32cba00bbfe1 subnet-03061cb6b7710b3a5 subnet-0742e53662fb1dc12 eni-0ea3ebd26e4832b54 eni-040e203651b487792 use1-az6 use1-az6 tgw-attach-039f737730c584a48 10.0.1.15 10.0.2.23 0 0 1 59 4956 1669164300 1669164359 OK IPv4 0 0 0 0 0 us-east-1 ingress - - <AWSアカウントID> us-east-1 2022/11/23/00 6 6 TransitGateway <AWSアカウントID> tgw-081ba8a810489d200 tgw-attach-0315056bf2c566107 <AWSアカウントID> <AWSアカウントID> vpc-04a3b32cba00bbfe1 vpc-062ed0e3a40e79be8 subnet-0742e53662fb1dc12 subnet-03061cb6b7710b3a5 eni-040e203651b487792 eni-0ea3ebd26e4832b54 use1-az6 use1-az6 tgw-attach-039f737730c584a48 10.0.2.23 10.0.1.15 0 0 1 59 4956 1669164300 1669164359 OK IPv4 0 0 0 0 0 us-east-1 egress - - <AWSアカウントID> us-east-1 2022/11/23/00 7 6 TransitGateway <AWSアカウントID> tgw-081ba8a810489d200 tgw-attach-039f737730c584a48 <AWSアカウントID> <AWSアカウントID> vpc-062ed0e3a40e79be8 vpc-04a3b32cba00bbfe1 subnet-03061cb6b7710b3a5 subnet-0742e53662fb1dc12 eni-0ea3ebd26e4832b54 eni-040e203651b487792 use1-az6 use1-az6 tgw-attach-0315056bf2c566107 10.0.1.15 10.0.2.23 0 0 1 59 4956 1669164480 1669164539 OK IPv4 0 0 0 0 0 us-east-1 egress - - <AWSアカウントID> us-east-1 2022/11/23/00 8 6 TransitGateway <AWSアカウントID> tgw-081ba8a810489d200 tgw-attach-0315056bf2c566107 <AWSアカウントID> <AWSアカウントID> vpc-062ed0e3a40e79be8 vpc-04a3b32cba00bbfe1 subnet-03061cb6b7710b3a5 subnet-0742e53662fb1dc12 eni-0ea3ebd26e4832b54 eni-040e203651b487792 use1-az6 use1-az6 tgw-attach-039f737730c584a48 10.0.1.15 10.0.2.23 0 0 1 58 4872 1669164360 1669164419 OK IPv4 0 0 0 0 0 us-east-1 ingress - - <AWSアカウントID> us-east-1 2022/11/23/00 9 6 TransitGateway <AWSアカウントID> tgw-081ba8a810489d200 tgw-attach-0315056bf2c566107 <AWSアカウントID> <AWSアカウントID> vpc-04a3b32cba00bbfe1 vpc-062ed0e3a40e79be8 subnet-0742e53662fb1dc12 subnet-03061cb6b7710b3a5 eni-040e203651b487792 eni-0ea3ebd26e4832b54 use1-az6 use1-az6 tgw-attach-039f737730c584a48 10.0.2.23 10.0.1.15 0 0 1 58 4872 1669164360 1669164419 OK IPv4 0 0 0 0 0 us-east-1 egress - - <AWSアカウントID> us-east-1 2022/11/23/00 10 6 TransitGateway <AWSアカウントID> tgw-081ba8a810489d200 tgw-attach-039f737730c584a48 <AWSアカウントID> <AWSアカウントID> vpc-04a3b32cba00bbfe1 vpc-062ed0e3a40e79be8 subnet-0742e53662fb1dc12 subnet-03061cb6b7710b3a5 eni-040e203651b487792 eni-0ea3ebd26e4832b54 use1-az6 use1-az6 tgw-attach-0315056bf2c566107 10.0.2.23 10.0.1.15 0 0 1 58 4872 1669164360 1669164419 OK IPv4 0 0 0 0 0 us-east-1 ingress - - <AWSアカウントID> us-east-1 2022/11/23/00
こちらのスキャンしたデータ量は4.73 KBでした。スキャン量が減っていることからPartition Projectionによるパーティションの設定が上手く動作していそうです。パーティションdatehour
のタイプをdate
にして、範囲をNOW-1YEARS,NOW
にしているので、時間が経過してもALTER TABLE ADD PARTITIONやMSCK REPAIR TABLEの実行が不要なのはやはり便利です。
次に、送信元IPアドレス毎の件数を確認してみます。
SELECT srcaddr, COUNT(srcaddr) as count FROM transit_gateway_flow_logs_partition_projection WHERE aws_account_id='<AWSアカウントID>' and aws_region='us-east-1' and datehour>='2022/11/22/00' and datehour<='2022/11/23/00' GROUP BY srcaddr
実行結果は以下の通りです。
# srcaddr count 1 10.0.1.15 10606 2 10.0.2.23 10568
最後に、Transit Gatewayへのingressの通信について、以下グループで発生件数の多かったもの10件を確認します。
- 送信元IPアドレス
- 送信先IPアドレス
- プロトコル
- 送信先ポート
- 通信の方向
SELECT srcaddr, dstaddr, protocol, dstport, flow_direction, COUNT(srcaddr) as count FROM transit_gateway_flow_logs_partition_projection WHERE aws_account_id='<AWSアカウントID>' and aws_region='us-east-1' and datehour>='2022/11/22/00' and datehour<='2022/11/23/00' and flow_direction='ingress' GROUP BY srcaddr, dstaddr, protocol, dstport, flow_direction ORDER BY count DESC LIMIT 10
実行結果は以下の通りです。
# srcaddr dstaddr protocol dstport flow_direction count 1 10.0.2.23 10.0.1.15 6 37920 ingress 1000 2 10.0.2.23 10.0.1.15 6 41213 ingress 1000 3 10.0.2.23 10.0.1.15 6 36941 ingress 1000 4 10.0.2.23 10.0.1.15 6 44305 ingress 1000 5 10.0.2.23 10.0.1.15 6 39819 ingress 1000 6 10.0.2.23 10.0.1.15 1 0 ingress 208 7 10.0.1.15 10.0.2.23 1 0 ingress 208 8 10.0.1.15 10.0.2.23 6 22 ingress 65 9 10.0.1.15 10.0.2.23 6 1 ingress 23 10 10.0.1.15 10.0.2.23 6 80 ingress 10
nmapでIPアドレスが10.0.1.15
のEC2インスタンスからIPアドレスが10.0.2.23
のEC2インスタンスに対してポートスキャンしたので、そのレスポンスの通信が大半を占めていそうです。次点でICMPのEcho Replyが続いていますね。
Transit Gateway Flow Logsを手作業で設定する世界線から脱却できる
CloudFormationがTransit Gateway Flow Logsをサポートされたアップデートを紹介しました。
これでTransit Gateway Flow Logsを手作業で設定する世界線から脱却できますね。
この記事が誰かの助けになれば幸いです。
以上、AWS事業本部 コンサルティング部の のんピ(@non____97)でした!